/**
 * N个点，将u、v连通块连通的代价是u点数减去v点数
 * N个点原来都是独立的，问将N个点连成一个整个最小代价是多少
 * 因为N最大到1E12，肯定不能用DP
 * 递归分治即可，对于N个点，显然均分以后，各自连，再整个合并代价是最小的
 */
#include <bits/stdc++.h>
using namespace std;

using llt = long long;

llt N;

llt dfs(llt n){
    if(n <= 1) return 0;
    if(n & 1){
        return dfs(n / 2) + dfs(n / 2 + 1) + 1;
    }
    return dfs(n / 2) << 1;
}
 

void work(){
    cin >> N;
    cout << dfs(N)<< "\n";
}

int main(){
    int nofkase = 1;
    cin >> nofkase;
    while(nofkase--) work();
    return 0;
}